﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Portal.Web.Global;
using Portal.Web.Framework;
using Portal.Core;
using Portal.AssetTn.Model;


namespace Portal.Gui.Web.WebParts.AssetTn
{
    public class AssetTN_SimpleSearch : WebPart
    {
        public override string WebPartId
        {
            get
            {
                return "AssetTN.SimpleSearch";
            }
        }


        public override WebPartServiceCls WebPartService
        {
            get
            {
                return AssetUtility.WebPartService;
            }
        }

        public override string Title
        {
            get
            {
                return "Tìm kiếm hiện vật đơn giản";
            }
        }

        public override string Description
        {
            get
            {
                return "";
            }
        }


        public override string RenderWebPart(LoadParamCls loadParamCls)
        {
            try
            {
                AjaxPro.Utility.RegisterTypeForAjax(typeof(AssetTN_SimpleSearch));
                string SiteId = loadParamCls.SiteId;
                string Subject = loadParamCls.RefTitle;
                if (string.IsNullOrEmpty(Subject))
                {
                    Subject = Title;
                }
                string k = (string)Environments.Request("k");
                string RetHtml =
                        " <script language=javascript>\r\n" +
                        "   function SearchNextPage(CurrentPageIndex)\r\n" +
                        "   {\r\n" +
                        "       document.getElementById('txtSearchPageIndex').value=CurrentPageIndex;\r\n" +
                        "       document.getElementById('divProcessing').innerHTML='Đang tìm kiếm dữ liệu trên máy chủ dịch vụ...';\r\n" +
                        "       setTimeout('RealClientSearch()',10);\r\n" +
                        "   }\r\n" +

                        "   function ClientSearch()\r\n" +
                        "   {\r\n" +
                        "       document.getElementById('divProcessing').innerHTML='Đang tìm kiếm dữ liệu trên máy chủ dịch vụ...';\r\n" +
                        "       setTimeout('RealClientSearch()',10);\r\n" +
                        "   }\r\n" +
                        "   function RealClientSearch()\r\n" +
                        "   {\r\n" +
                        "       SiteId='" + SiteId + "';\r\n" +
                        "       PageIndex = parseInt(document.getElementById('txtSearchPageIndex').value);\r\n" +
                        "       SimpleSearchKeyword = document.getElementById('txtSimpleSearchKeyword').value;\r\n" +
                        "       LoadFromBackEnd= document.getElementById('txtLoadFromBackEnd').value;\r\n" +
                        "       AjaxOut = Portal.Gui.Web.WebParts.AssetTn.AssetTN_SimpleSearch.ServerSideSearch(SiteId, LoadFromBackEnd, SimpleSearchKeyword,PageIndex).value;\r\n" +
                        "       document.getElementById('divProcessing').innerHTML='';\r\n" +
                        "       if(AjaxOut.Error)\r\n" +
                        "       {\r\n" +
                        "           alert(AjaxOut.InfoMessage);\r\n" +
                        "           return;\r\n" +
                        "       }\r\n" +
                        "       document.getElementById('divSearchResult').innerHTML=AjaxOut.HtmlContent;\r\n";

                if (string.IsNullOrEmpty(k))
                {
                    RetHtml +=
                        "       window.open('default.aspx#divSearchResult','_self');\r\n";
                }
                else
                {
                    RetHtml +=
                        "       window.open('default.aspx?k="+k+"#divSearchResult','_self');\r\n";
                }
                RetHtml +=
                        "   }\r\n" +
                        " </script>\r\n" +
                        " <div id=\"" + loadParamCls.Id + "\"> \r\n" +
                        " <input id=txtLoadFromBackEnd value=\"" + (loadParamCls.LoadFromBackend ? "1" : "0") + "\" type=\"hidden\">\r\n" +
                        " <input id=txtSearchPageIndex value=\"0\" type=hidden>\r\n" +
                        " <table class=\"il_Block\" datatable=\"0\">\r\n" +
                        " <tbody>\r\n";
                if (loadParamCls.VisibleTitle)
                {
                    RetHtml +=
                        " <tr>\r\n" +
                        "     <td class=\"ilBlockHeaderBig\" colspan=\"1\">\r\n" +
                        "       <div style=\"float:left;\">\r\n" +
                        "         <h3 class=\"ilBlockHeader\"><a class=\"ilAccAnchor\" name=\"" + loadParamCls.Id + "_blhead\" id=\"" + loadParamCls.Id + "_blhead\">" + Subject + "</a></h3> <span id=\"" + loadParamCls.Id + "_loader\"></span>\r\n" +
                        "       </div>\r\n" +
                        "     </td>\r\n" +
                        " </tr>\r\n";
                }
                RetHtml+=
                        "   <tr class=\"tblrow1\">\r\n" +
                        "       <td class=\"std\"><div style=\"float:right;\"><img style=\"width:150px;\" border=\"0\" src=\"./templates/default/images/search-icon.png\"></div>\r\n" +
                        "       <h1>Tìm kiếm hiện vật theo từ khóa!</h1>\r\n" +
                        "           <p>Đây là chức năng tìm kiếm hiện vật theo từ khóa. Hệ thống sẽ tìm kiếm trên 3 trường là mã phân loại và tiêu đề hiện vật và người tạo:</p>\r\n" +
                        "            <input id=txtSimpleSearchKeyword type=textbox class=textbox value=\"" + k + "\"><input type=button class=button value=\"Tìm kiếm\" onclick=\"javascript:ClientSearch();\">\r\n" +
                        "           <ul>\r\n" +
                        "               <li>Từ khóa tìm kiếm cần có độ dài > 3 và có ý nghĩa. Các từ khóa này sẽ được lưu lại thông kê đưa vào các từ khóa thường xuyên tìm kiếm</li>\r\n" +
                        "               <li>Trong trường hợp bạn cần tìm kiếm chính xác hơn thì có thể chuyển sang tìm kiếm nâng cao. Với chức năng tìm kiếm nâng cao hệ thống sẽ cung cấp nhiều điều kiện hơn và cho phép tìm ra kết quả gần với kết quả mong muốn</li>\r\n" +
                        "               <li>Trong trường hợp tìm được kết quả bạn có thể xem chi tiết hiện vật, chỉnh sửa, xóa hiện vật đó nếu như có quyền truy cập đến chức năng này</li>\r\n" +
                        "           </ul>\r\n" +
                        "       </td>\r\n" +
                        "   </tr>\r\n" +
                        "  </tbody>\r\n" +
                        "</table>\r\n" +
                        "</div>\r\n" +
                        "<div id=divProcessing></div>\r\n"+
                        "<div id=divSearchResult>\r\n" +
                        "</div>\r\n";

                if (!string.IsNullOrEmpty(k))
                {
                    RetHtml += "<script language=\"javascript\">\r\n" +
                               "    ClientSearch();\r\n"+
                               "</script>\r\n";
                }

                return RetHtml;
            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public AjaxReturn ServerSideSearch(
            string SiteId,
            string LoadFromBackEnd,
            string Keyword,
            int CurrentPageIndex)
        {
            AjaxReturn oAjaxReturn = new AjaxReturn();
            try
            {
                Environments.CheckSessionTimeOut(true);
                //doan nay tim kiem
                DataSet dsResult = null;
                AssetModel[] AssetModels = AssetBll.Search(SiteId, null,
                    new ParamCls[] 
                    { 
                        new ParamCls("Subject", Keyword, true), 
                        new ParamCls("ClassCode", Keyword, false),
                        new ParamCls("InventoryCode", Keyword, false),
                        new ParamCls("AssetTypeName", Keyword, false),
                        new ParamCls("MadeBy", Keyword, true),
                    }, "ClassCode","ClassCode","ASC",  ref dsResult);
                
                AssetSearchResult oAssetSearchResult = AssetBll.WebRenderResult(SiteId,int.Parse(LoadFromBackEnd), AssetModels, CurrentPageIndex);
                oAjaxReturn.HtmlContent =
                    PortalRenderBll.GetPorletFromTemplate(SiteId, "simplesearch", "Kết quả tìm kiếm hiện vật (" + oAssetSearchResult.TotalRecord.ToString("#,##0") + "), tổng số hiện vật là (" + oAssetSearchResult.TotalAsset.ToString("#,##0") + ")", oAssetSearchResult.HtmlContent).HtmlContent;
            }
            catch (Exception ex)
            {
                oAjaxReturn.Error = true;
                oAjaxReturn.InfoMessage = ex.Message.ToString();
            }
            return oAjaxReturn;
        }

        public override string JumpUrl
        {
            get
            {
                return "default.aspx";
            }
        }

        public override void RegAjaxPro(System.Web.UI.Page ActivePage)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(AssetTN_SimpleSearch), ActivePage);
        }
    }
}
